<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function* A(v1){
            // 因为第一次运行到赋值之前就已经返回并且挂起 所以没有值
            // 接受到的第二次next方法发送的值会作为这个表达式最后的赋值结果
            const v2 = yield ("value1 " + v1);
            // 所以下面的这一行代码的输出结果是 value2 (Slim) Amadeus
            yield ("value2 (" + v2 + ") " + v1);
        }
        // 使用生成器函数参数发送值
        const B = A("Amadeus");
        const result1 = B.next();
        console.log(result1.value);
        // 使用next方法向生成器发送值
        const result2 = B.next("Slim");
        console.log(result2.value);
    </script>
</body>
</html>